package com.lecyon.farm.base;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.lecyon.farm.common.constant.CommonConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.ZoneId;

/**
 * @author Yao Zheng
 */
@ApiModel("统一返回Rest风格的数据结构")
@Data
public class BaseResponse implements Serializable {

    /**
     * 请求是否成功
     */
    @ApiModelProperty(value = "请求是否成功")
    protected boolean success;

    /**
     * 业务自定义状态码
     */
    @ApiModelProperty(value = "业务自定义状态码")
    protected Integer code;

    /**
     * 请求状态描述，调试用
     */
    @ApiModelProperty(value = "请求状态描述")
    protected String errorMessage;

    /**
     * 服务器当前时间（添加该字段的原因是便于查找定位请求时间，因为实际开发过程中服务器时间可能跟本地时间不一致，加上这个时间戳便于日后定位）
     */
    @ApiModelProperty(value = "服务器当前时间")
    @JsonFormat(pattern = CommonConstant.DATE_TIME_FORMAT_PATTERN, timezone = CommonConstant.TIME_ZONE)
    protected LocalDateTime currentTime = LocalDateTime.now(ZoneId.systemDefault());
}
